/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package net.javahispano.nettools.cliente.Grafico;

import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Adolfo
 */
public class ModeloTabla {
DefaultTableModel modelo1 = new DefaultTableModel();

    private String[] columnNames= {"Nombre de imagen", "Pid", "Nombre de sesion", "CPU", "Uso de memoria"} ;
    private Object[][] data;




    ModeloTabla(String procesos) {

int inicio = 0, fin = 0;
        String separador = ">#";

  String aux;
        int total = NumeroDeSubdirectorios(procesos, separador);
        int cont = 0;
        //columnNames = {"Nombre de imagen", "Pid", "Nombre de sesion", "CPU", "Uso de memoria"} ;
      data=new Object[total - 3][5];
        String cadena1 = "";
        int estado = 0;
        int filas = 0, columnas = 0;
        String campo1 = "";
        String campo2 = "";
        String campo3 = "";
        String campo4 = "";
        String campo5 = "";
        char anterior = ' ', siguiente = ' ';
        int blancos = 0;

        int i;
        int contador = 0;
        fin = procesos.indexOf(separador, 0);
        inicio = procesos.indexOf(separador, fin + 2);
        fin = procesos.indexOf(separador, inicio + 2);
        inicio = fin + 2;

        while (filas < total - 3) {//total-4
            fin = procesos.indexOf(separador, inicio);
            aux = procesos.substring(inicio, fin);
            blancos = 0;
            columnas = 4;
            contador = 0;
            for (int j = aux.length() - 1; j > 0; j--) {
                if (estado == 0) {
                    //System.out.println("Estamos en el estado 0");
                    if (aux.charAt(j) == ' ') {
                        blancos++;

                        if (blancos == 2) {
                            data[filas][columnas] = VueltaCadena(campo1);
                            campo1 = " ";
                            //      modelo1.setValueAt (filas, columnas,'');
                            columnas--;
                            estado = 1;
                        } else {
                            campo1 += aux.charAt(j);
                        }
                        anterior = aux.charAt(j);
                        // siguiente=aux.charAt(filas+1);

                    } else // blancos++;
                    {
                        campo1 += aux.charAt(j);
                    }
                }
                if (estado == 1)//campo 2 estado 1
                {
                    //System.out.println("Estamos en el estado 1");
                    if ((aux.charAt(j) == ' ') && (anterior != ' ')) {
                        data[filas][columnas] = VueltaCadena(campo1);
                        campo1 = " ";
                        contador++;
                        columnas--;
                        if (contador == 3) {
                            estado = 2;
                            campo1 = "";
                        }
                    }
                    if (aux.charAt(j) != ' ') {
                        campo1 += aux.charAt(j);

                    }

                    anterior = aux.charAt(j);
                }
                if (estado == 2)//ultimo campo estado 2
                {
                    if ((aux.charAt(j) == ' ') && (anterior != ' ')) {
                    } else {

                        campo1 += aux.charAt(j);
                        if (j == 1) {

                            campo1 += aux.charAt(j - 1);
                            data[filas][columnas] = VueltaCadena(campo1);
                            campo1 = " ";
                            estado = 0;

                        }
                    }
                }
            }
            filas++;

            inicio = fin + 2;
            cont++;

        }


    //modelo1.addColumn(data, columnNames);
   // return modelo1;
    }

  public int NumeroDeSubdirectorios(String directorio,String patron){
int contador=0;
while (directorio.indexOf(patron) > -1) {
      directorio = directorio.substring(directorio.indexOf(
        patron)+patron.length(),directorio.length());
      contador++;
}
return contador;
}

   public String VueltaCadena(String sCadena){
    String sCadenaInvertida="";
    for (int x=sCadena.length()-1;x>=0;x--)
		sCadenaInvertida = sCadenaInvertida + sCadena.charAt(x);
    return sCadenaInvertida;

}

    /**
     * @return the columnNames
     */
    public String []getColumnNames() {
        return columnNames;
    }

    /**
     * @param columnNames the columnNames to set
     */
    public void setColumnNames(String columnNames) {
        this.setColumnNames(columnNames);
    }

    /**
     * @return the data
     */
    public Object[][] getData() {
        return data;
    }

    /**
     * @param data the data to set
     */
    public void setData(Object[][] data) {
        this.data = data;
    }

    /**
     * @param columnNames the columnNames to set
     */
    public void setColumnNames(String[] columnNames) {
        this.columnNames = columnNames;
    }

    /**
     * @return the columnNames
     */


}
